Gerson implementou o decorator visto neste capítulo. Contudo, ao usar em métodos que precisavam realizar event.preventDefault(), ele não funcionou corretamente, muitas vezes recarregando a página, o que não faz sentido dentro de uma Single Page Application.
Seu código com problema esta assim:
export function throttle(milissegundos = 500) {
return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const metodoOriginal = descriptor.value;
if(event) event.preventDefault();
descriptor.value = function(...args: any[]) {
let timer = 0;
clearInterval(timer);
timer = setTimeout(() => metodoOriginal.apply(this, args), milissegundos);
}
return descriptor;
}
}
Marque apenas as opções verdadeiras que indiquem problemas no código escrito por Gerson.
Selecione 2 alternativasO código correto deve estar assim:
export function throttle(milissegundos = 500) {
return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const metodoOriginal = descriptor.value;
let timer = 0;
descriptor.value = function(...args: any[]) {
if(event) event.preventDefault();
clearInterval(timer);
timer = setTimeout(() => metodoOriginal.apply(this, args), milissegundos);
}
return descriptor;
}
}